
// créée un nouvel objet afin d'executer un requête AJAX
function ajaxCreateRequest(){
			
	var xmlHttpRequest;

	try{
		xmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP');   
	}catch(e){
		try{
			xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
		}catch (e2){
			try{
				xmlHttpRequest = new XMLHttpRequest();
			}catch (e3){
				xmlHttpRequest = null;
			}	 
		}
	}
	
	return xmlHttpRequest;
	
}

// Envoie le formulaire par la methode POST
function ajaxSendPostRequest(source, target, form, async){

	source.open("POST", target, async);
	source.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
	
	var params = null;
	
	if(form != null){
		for(var i=0; i<=form.length-1; i++){
			if(params == null){
				params = form[i].name+"="+form[i].value;
			}else{
				params += "&"+form[i].name+"="+encodeURIComponent(form[i].value);
			}
		}
	}

	source.send(params);
		
}

// Envoie le formulaire par la methode GET
function ajaxSendGetRequest(source, target, params, async){

	var url = target;

	if(params != null){
		url += "?"+params;
	}

	source.open("GET", url, async);
	source.send(null);
		
}



/********************************** Traitement des données **********************************/

function afficherListeItems(item, hide, fichier) {

	var champSaisieItem = document.getElementById(item);
	var champAffichage = document.getElementById("lst_"+item+"-contenu");
	
	if (hide) {
	
		var cadreAffichage = document.getElementById("lst_"+item);
		
	}
	
	var valeursItem = "";
		
	// récupération des valeurs des champs
	if (champSaisieItem.value != "") {
		
		valeursItem = "nItem="+encodeURIComponent(champSaisieItem.value);
		
	}
	
	if (valeursItem != "") { // si on a au moins une valeur indiquée
	
		var r = ajaxCreateRequest();
		
		if (r != null) {
		
			r.onreadystatechange = function() {
			
				if (r.readyState == 4) {
				
					if (r.status == 200) {
					
						cadreAffichage.style.display = "block";
					
						var listeXML = r.responseXML.getElementsByTagName('item');
						var listeHTML = "";
						
						if (listeXML.length > 0) {
						
							listeHTML = "<ul>";
							for (var i=0; i<listeXML.length; i++) {
							
								var ItemAff;
								
						   // On affiche en gras les partie correspondant à la valeur du champ
								if (champSaisieItem.value != "") {
								
									var nomItem = capitalise(listeXML[i].getAttribute('nItem'));
									var infosuppl = capitalise(listeXML[i].getAttribute('nSuppl'));
                           
								
                        // le début est donc en gras
                        // exemple : si on tappe Bes -> on aura <strong>Bes</strong>ançon
								   ItemAff = "<strong>" + nomItem.substr(0, champSaisieItem.value.length) + "</strong>"
													+ nomItem.substr(champSaisieItem.value.length, nomItem.length);
													
								// si on travaille sur des communes ou des codes INSEE
                        // on aura a chaque fois besoin des deux informations
                        // d'ou une variable supplémentaire
                           if (infosuppl != '') {
										ItemAff = ItemAff + " (" + infosuppl + ")";
									
									}
									
								}
								else {
								
									ItemAff = capitalise(listeXML[i].getAttribute('nItem'));
									
								}
							
								listeHTML += "<li><a href=\"#\" onclick=\"";
								if (hide) {
								
									listeHTML += "document.getElementById('" + "lst_"+item + "').style.display='none';";
									
								}

								listeHTML += "document.getElementById('" + item + "').value='" + listeXML[i].getAttribute('nItem').replace("'", "\\\'") + "'; return false;";
								listeHTML += "\">";
								listeHTML += ItemAff;
								listeHTML += "</a></li>";
								
							}
							listeHTML += "</ul>";
							
						}
						else {
						
							listeHTML = "<i>Aucune suggestion</i>";
							
						}
					
						champAffichage.innerHTML = listeHTML;
					
					}
					
				}
				
			};
			var chemin = "xml/" + fichier;
			ajaxSendGetRequest(r, chemin, valeursItem, true);
			
		}
		
	}
	else {
	
		cadreAffichage.style.display = "none";
		
	}
	
}




// affiche la liste des communes en fonction de la valeur des champs indiqués
function afficherListeCommunes(commune, cp, pays, zoneAffichage, hide){

	var champSaisieCommune = document.getElementById(commune);
	var champSaisieCP = document.getElementById(cp);
	var champSaisiePays = document.getElementById(pays);
	var champAffichage = document.getElementById(zoneAffichage+"-contenu");
	
	if(hide){
		var cadreAffichage = document.getElementById(zoneAffichage);
	}
	
   var valeursCommune = "";
		
	// récupération des valeurs des champs
	if(champSaisieCP.value != "" && champSaisieCP.value != "CP"){
		if(valeursCommune != ""){
			valeursCommune += "&";
		}
		valeursCommune += "cp="+encodeURIComponent(champSaisieCP.value);
	}
	if(champSaisieCommune.value != "" && champSaisieCommune.value != "Ville"){
		if(valeursCommune != ""){
			valeursCommune += "&";
		}
		valeursCommune += "nom="+encodeURIComponent(champSaisieCommune.value);
	}
	if(champSaisiePays.value != "" && champSaisiePays.value != "Pays"){
		if(valeursCommune != ""){
			valeursCommune += "&";
		}
		valeursCommune += "pays="+encodeURIComponent(champSaisiePays.value);
	}
	
	if(valeursCommune != ""){ // si on a au moins une valeur indiquée
	
		var r = ajaxCreateRequest();
		
		if(r != null){
			r.onreadystatechange = function(){
				if(r.readyState == 4){
					if(r.status == 200){
					
						cadreAffichage.style.display = "block";
					
						var listeXML = r.responseXML.getElementsByTagName('commune');
						var listeHTML = "";
						
						if(listeXML.length > 0){
							for(var i=0; i<listeXML.length; i++){
							
								var cpAff;
								var communeAff;
								var paysAff;
								
								// On affiche en gras les partie correspondant à la valeur du champ
								if(champSaisieCP.value != "CP"){
									cpAff = "<b>"+listeXML[i].getAttribute('cp').substr(0, champSaisieCP.value.length)+"</b>"+listeXML[i].getAttribute('cp').substr(champSaisieCP.value.length, listeXML[i].getAttribute('cp').length);
								}else{
									cpAff = listeXML[i].getAttribute('cp');
								}
								if(champSaisieCommune.value != "Ville"){
									var nomCommune = capitalise(listeXML[i].getAttribute('nom'));
									communeAff = "<b>"+nomCommune.substr(0, champSaisieCommune.value.length)+"</b>"+nomCommune.substr(champSaisieCommune.value.length, nomCommune.length);
								}else{
									communeAff = capitalise(listeXML[i].getAttribute('nom'));
								}
								if(champSaisiePays.value != "Pays"){
									paysAff = "<b>"+listeXML[i].firstChild.firstChild.nodeValue.substr(0, champSaisiePays.value.length)+"</b>"+listeXML[i].firstChild.firstChild.nodeValue.substr(champSaisiePays.value.length, listeXML[i].firstChild.firstChild.nodeValue.length);
								}else{
									paysAff = listeXML[i].firstChild.firstChild.nodeValue;
								}
							
								listeHTML += "<a href=\"#\" onclick=\"";
								if(hide){
									listeHTML += "document.getElementById('"+zoneAffichage+"').style.display='none';";
								}
								listeHTML += "document.getElementById('"+commune+"').value='"+listeXML[i].getAttribute('nom').replace("'", "\\\'")+"'; document.getElementById('"+cp+"').value='"+listeXML[i].getAttribute('cp')+"'; document.getElementById('"+pays+"').value='"+listeXML[i].firstChild.firstChild.nodeValue+"'; return false;";
								listeHTML += "\"><div id=\"choice_"+i+"\" class=\"autoComplChoice\">";
								listeHTML += cpAff+" - "+communeAff+" ("+paysAff+")";
								listeHTML += "</div></a>";
							}
						}else{
							listeHTML = "<i>Aucune suggestion</i>";
						}
					
						champAffichage.innerHTML = listeHTML;
					
					}
				}
			};
			ajaxSendGetRequest(r, "xml/communes.php", valeursCommune, true);
		}
		
	}else{
		cadreAffichage.style.display = "none";
	}
		
}


// affiche la liste des communes en fonction de la valeur des champs indiqués
function afficherListeDouble(elt, zoneAffichage, hide){

	var champSaisie = document.getElementById(elt);
	var champAffichage = document.getElementById(zoneAffichage+"-contenu");
	
	if(hide){
		var cadreAffichage = document.getElementById(zoneAffichage);
	}
	
   var valeursCommune = "";
		
	// récupération des valeurs des champs
	if(champSaisieCP.value != "" && champSaisieCP.value != "CP"){
		if(valeursCommune != ""){
			valeursCommune += "&";
		}
		valeursCommune += "cp="+encodeURIComponent(champSaisieCP.value);
	}
	if(champSaisieCommune.value != "" && champSaisieCommune.value != "Ville"){
		if(valeursCommune != ""){
			valeursCommune += "&";
		}
		valeursCommune += "nom="+encodeURIComponent(champSaisieCommune.value);
	}
	if(champSaisiePays.value != "" && champSaisiePays.value != "Pays"){
		if(valeursCommune != ""){
			valeursCommune += "&";
		}
		valeursCommune += "pays="+encodeURIComponent(champSaisiePays.value);
	}
	
	if(valeursCommune != ""){ // si on a au moins une valeur indiquée
	
		var r = ajaxCreateRequest();
		
		if(r != null){
			r.onreadystatechange = function(){
				if(r.readyState == 4){
					if(r.status == 200){
					
						cadreAffichage.style.display = "block";
					
						var listeXML = r.responseXML.getElementsByTagName('commune');
						var listeHTML = "";
						
						if(listeXML.length > 0){
							for(var i=0; i<listeXML.length; i++){
							
								var cpAff;
								var communeAff;
								var paysAff;
								
								// On affiche en gras les partie correspondant à la valeur du champ
								if(champSaisieCP.value != "CP"){
									cpAff = "<b>"+listeXML[i].getAttribute('cp').substr(0, champSaisieCP.value.length)+"</b>"+listeXML[i].getAttribute('cp').substr(champSaisieCP.value.length, listeXML[i].getAttribute('cp').length);
								}else{
									cpAff = listeXML[i].getAttribute('cp');
								}
								if(champSaisieCommune.value != "Ville"){
									var nomCommune = capitalise(listeXML[i].getAttribute('nom'));
									communeAff = "<b>"+nomCommune.substr(0, champSaisieCommune.value.length)+"</b>"+nomCommune.substr(champSaisieCommune.value.length, nomCommune.length);
								}else{
									communeAff = capitalise(listeXML[i].getAttribute('nom'));
								}
								if(champSaisiePays.value != "Pays"){
									paysAff = "<b>"+listeXML[i].firstChild.firstChild.nodeValue.substr(0, champSaisiePays.value.length)+"</b>"+listeXML[i].firstChild.firstChild.nodeValue.substr(champSaisiePays.value.length, listeXML[i].firstChild.firstChild.nodeValue.length);
								}else{
									paysAff = listeXML[i].firstChild.firstChild.nodeValue;
								}
							
								listeHTML += "<a href=\"#\" onclick=\"";
								if(hide){
									listeHTML += "document.getElementById('"+zoneAffichage+"').style.display='none';";
								}
								listeHTML += "document.getElementById('"+commune+"').value='"+listeXML[i].getAttribute('nom').replace("'", "\\\'")+"'; document.getElementById('"+cp+"').value='"+listeXML[i].getAttribute('cp')+"'; document.getElementById('"+pays+"').value='"+listeXML[i].firstChild.firstChild.nodeValue+"'; return false;";
								listeHTML += "\"><div id=\"choice_"+i+"\" class=\"autoComplChoice\">";
								listeHTML += cpAff+" - "+communeAff+" ("+paysAff+")";
								listeHTML += "</div></a>";
							}
						}else{
							listeHTML = "<i>Aucune suggestion</i>";
						}
					
						champAffichage.innerHTML = listeHTML;
					
					}
				}
			};
			ajaxSendGetRequest(r, "xml/communes.php", valeursCommune, true);
		}
		
	}else{
		cadreAffichage.style.display = "none";
	}
		
}

// indique si oui ou non il existe des personnes enregistrées avec le même nom et prenom qu'indiqués
function verifHomonymes(nom, prenom, formulaire){

	var champNom = document.getElementById(nom);
	var champPrenom = document.getElementById(prenom);
	var frm = document.getElementById(formulaire);
	
	var valeursPersonne = "";
	
	if(champNom.value != ""){
		if(valeursPersonne != ""){
			valeursPersonne += "&";
		}
		valeursPersonne += "nom="+encodeURIComponent(champNom.value);
	}
	if(champPrenom.value != ""){
		if(valeursPersonne != ""){
			valeursPersonne += "&";
		}
		valeursPersonne += "prenom="+encodeURIComponent(champPrenom.value);
	}
	
	if(champPrenom.value != "" && champNom.value != ""){
		var r = ajaxCreateRequest();
		if(r != null){
			r.onreadystatechange = function(){
				if(r.readyState == 4){
					if(r.status == 200){
						var listeXML = r.responseXML.getElementsByTagName('personne');
						
						if(listeXML.length > 0){
							var rep = confirm("Il existe "+listeXML.length+" homonyme(s) de cette personne. Confirmer la création d\'une nouvelle personne ?");
							if(rep){
								frm.submit();
							}
						}else{
							frm.submit();
						}
						
					}
				}
			};
			ajaxSendGetRequest(r, "xml/personnes.php", valeursPersonne, true);
			return false;
		}else{
			return true;
		}		
	}else{
		return true;
	}
		
}

